﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Follow.Model;
using Follow.DataAccess;
using Follow.Common;

namespace Follow.Business
{
    public class ClienteBO
    {
        public IList<Cliente> findAll()
        {
            ClienteDAO dao = new ClienteDAO();
            return dao.findAll();
        }


        public Cliente findByCnpj(string cnpj)
        {
            ClienteDAO dao = new ClienteDAO();
            return dao.findByCnpj(cnpj);
        }


        //public IList<Cliente> findByName(String nome)
        //{
        //    ClienteDAO dao = new ClienteDAO();
        //    return dao.findByName(nome);
        //}

        public IList<Cliente> findByName(String nome, Boolean inativo)
        {
            ClienteDAO dao = new ClienteDAO();
            return dao.findByName(nome, inativo);
        }

         public void save(Cliente cliente, Int32 idlogin)
        {
            ClienteDAO dao = new ClienteDAO();

            if (cliente.IDCliente == Int32.MinValue || cliente.IDCliente.Equals(0))
            {
                dao.insert(cliente, idlogin);
            }
            else
            {
                dao.update(cliente, idlogin);
            }
        }

        public Cliente load(Int32 idcliente)
        {
            ClienteDAO dao = new ClienteDAO();
            return dao.findById(idcliente);
        }

        public void delete(Int32 id, Int32 idlogin)
        {
            ClienteDAO dao = new ClienteDAO();
            validaDeleteCliente(id);
            dao.delete(id, idlogin);
        }


        public void validaDeleteCliente(Int32 id)
        {
            VisitaDAO dao = new VisitaDAO();
            IList<Visita> f = dao.findByCli(id);

            if (f != null && !(f.Count.Equals(0)))
            {
                throw new Exception("Esse Cliente não pode ser excluído. Ele está relacionado a uma visita.");
            }

        }

    }
         
}